def single_non_duplicate(nums):
    """
    问题：在有序数组中，除一个元素外其余均出现两次，找到该元素（时间O(log n)）
    思路：二分查找，利用成对元素索引特性（左侧偶数索引与奇数索引值相等）
    """
    left, right = 0, len(nums) - 1
    while left < right:
        mid = (left + right) // 2
        # 确保mid是偶数（成对元素的第一个位置）
        if mid % 2 == 1:
            mid -= 1
        # 若mid与mid+1相等，单一元素在右侧
        if nums[mid] == nums[mid + 1]:
            left = mid + 2
        # 否则在左侧
        else:
            right = mid
    return nums[left]

# 测试
print(single_non_duplicate([1,1,2,3,3,4,4,8,8]))  # 输出：2
print(single_non_duplicate([3,3,7,7,10,11,11]))   # 输出：10